//	---------------------------------------------------------------------------
//	dark-matter-data
//	Copyright (c) 2014 dark-matter-data committers
//	---------------------------------------------------------------------------
//	This program is free software; you can redistribute it and/or modify it
//	under the terms of the GNU Lesser General Public License as published by the
//	Free Software Foundation; either version 3 of the License, or (at your
//	option) any later version.
//	This program is distributed in the hope that it will be useful, but WITHOUT
//	ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//	FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
//	more details.
//	You should have received a copy of the GNU Lesser General Public License along
//	with this program; if not, see <http://www.gnu.org/licenses/lgpl.html>.
//	---------------------------------------------------------------------------
package org.dmd.gpb.server.generated;

import org.dmd.dmc.DmcOmni;
import org.dmd.dmc.DmcValueException;
import org.dmd.dms.*;
import org.dmd.dms.generated.dmo.*;
import org.dmd.gpb.shared.generated.dmo.DmdgpbDMSAG;


/**
 * The dark-matter GPB schema defines objects that for the specification\n of
 * elements required to generate Google Protocol Buffer specifications, but
 * adds\n the ability to document those interfaces.
 * <P>
 * Generated from the dmdgpb schema at version 0.1
 * <P>
 * This code was auto-generated by the dmggenerator utility and shouldn't be alterred manually!
 * Generated from: org.dmd.dmg.util.SchemaFormatter.dumpSchema(SchemaFormatter.java:182)
 */
public class DmdgpbSchemaAG extends SchemaDefinition {

    public static ClassDefinition _GpbDefinition;
    public static ClassDefinition _GpbType;
    public static ClassDefinition _GpbScalarType;
    public static ClassDefinition _GpbCompositeType;
    public static ClassDefinition _GpbEnum;
    public static ClassDefinition _GpbField;
    public static ClassDefinition _GpbMessage;
    public static ClassDefinition _GpbProtoFile;
    public static ClassDefinition _GpbModule;

    public static AttributeDefinition _cplusplusType;
    public static AttributeDefinition _dmType;
    public static AttributeDefinition _defaultValue;
    public static AttributeDefinition _sizeInBytes;
    public static AttributeDefinition _gpbType;
    public static AttributeDefinition _generatedFileName;
    public static AttributeDefinition _definedInGpbModule;
    public static AttributeDefinition _pythonType;
    public static AttributeDefinition _javaType;
    public static AttributeDefinition _basedOnEnum;
    public static AttributeDefinition _dependsOnGpbModule;
    public static AttributeDefinition _package;
    public static AttributeDefinition _gpbEnumValue;
    public static AttributeDefinition _mainElements;
    public static AttributeDefinition _field;
    public static AttributeDefinition _tag;
    public static AttributeDefinition _fieldRule;
    public static AttributeDefinition _import;
    public static AttributeDefinition _embed;
    public static AttributeDefinition _generateAs;

    public static TypeDefinition _GpbFieldIndicator;

    public static ComplexTypeDefinition _GpbFieldIndicatorBase;
    public static ComplexTypeDefinition _GpbEnumValue;


    public static EnumDefinition _FieldRuleEnum;
    public static EnumDefinition _OptionEnum;


    public static DSDefinitionModule _GpbModuleDSD;

    static DmdgpbSchemaAG instance;

    public DmdgpbSchemaAG() throws DmcValueException {
        generatedSchema = true;
        staticRefName   = "org.dmd.gpb.server.generated.DmdgpbSchemaAG";

        dependsOnSchemaClasses.put("dmv","org.dmd.dmv.server.generated.DmvSchemaAG");
        dependsOnSchemaClasses.put("dmconcinnity","org.dmd.concinnity.server.generated.DmconcinnitySchemaAG");

    }

    // Generated from: org.dmd.dmg.util.SchemaFormatter.dumpSchema(SchemaFormatter.java:208)
    private void initialize() throws DmcValueException {
        if (instance == null){
            instance        = this;
            SchemaDefinitionDMO me = (SchemaDefinitionDMO) this.getDmcObject();
            me.setName("dmdgpb");
            me.setDotName("dmdgpb");
            me.setSchemaPackage("org.dmd.gpb.shared");
            me.setDmwPackage("org.dmd.gpb.server");
            me.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/dmdgpb.dms");


            me.addDependsOn("dmv");
            dependsOnSchemaClasses.put("dmv","org.dmd.dmv.server.generated.DmvSchemaAG");

            me.addDependsOn("dmconcinnity");
            dependsOnSchemaClasses.put("dmconcinnity","org.dmd.concinnity.server.generated.DmconcinnitySchemaAG");


            initClasses();
            initAttributes1();
            initTypes();
            initComplexTypes();
            initActions();
            initEnums();
            initRules();
            initDSDModules();
            DmcOmni.instance().addCompactSchema(DmdgpbDMSAG.instance());
        }
    }

    // Generated from: org.dmd.dmg.util.SchemaFormatter.dumpInitFunction(SchemaFormatter.java:313)
    private void initClasses() throws DmcValueException {
// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            ClassDefinitionDMO _GpbDefinitionOBJ = new ClassDefinitionDMO();
            _GpbDefinition = new ClassDefinition(_GpbDefinitionOBJ,DmdgpbDMSAG.__GpbDefinition);
            _GpbDefinitionOBJ.setName("GpbDefinition");
            _GpbDefinitionOBJ.setDmdID("-477998");
            _GpbDefinitionOBJ.setClassType("ABSTRACT");
            _GpbDefinitionOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/classes.dmd");
            _GpbDefinitionOBJ.setLineNumber("17");
            _GpbDefinitionOBJ.addDescription("The GpbDefinition provides a common base for all dark-matter\n Google Protocol Buffer (GPB) definitions.");
            _GpbDefinitionOBJ.setDerivedFrom("meta.DSDefinition");
            _GpbDefinitionOBJ.setIsNamedBy("meta.name");
            _GpbDefinitionOBJ.setUseWrapperType("EXTENDED");
            _GpbDefinitionOBJ.setDmtREFImport("org.dmd.gpb.shared.generated.types.GpbDefinitionREF");
            _GpbDefinitionOBJ.setDmwIteratorClass("GpbDefinitionIterableDMW");
            _GpbDefinitionOBJ.addMay("meta.hint");
            _GpbDefinitionOBJ.addMay("meta.description");
            _GpbDefinitionOBJ.addMust("meta.name");
            _GpbDefinitionOBJ.addMust("meta.dotName");
            _GpbDefinitionOBJ.addMust("dmdgpb.definedInGpbModule");
            _GpbDefinitionOBJ.setDmwIteratorImport("org.dmd.gpb.server.generated.dmw.GpbDefinitionIterableDMW");
            _GpbDefinitionOBJ.setPartOfDefinitionModule("dmdgpb.GpbModule");
            _GpbDefinitionOBJ.setDotName("dmdgpb.GpbDefinition.ClassDefinition");
            _GpbDefinition.setDefinedIn(this);
            addClassDefList(_GpbDefinition);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            ClassDefinitionDMO _GpbTypeOBJ = new ClassDefinitionDMO();
            _GpbType = new ClassDefinition(_GpbTypeOBJ,DmdgpbDMSAG.__GpbType);
            _GpbTypeOBJ.setName("GpbType");
            _GpbTypeOBJ.setDmdID("-477997");
            _GpbTypeOBJ.setClassType("STRUCTURAL");
            _GpbTypeOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/classes.dmd");
            _GpbTypeOBJ.setLineNumber("30");
            _GpbTypeOBJ.addDescription("The GpbType class provides a common base for all things that can be used \n to represent the type of a GpbField. This includes the built-in scalar types associated with\n Google Protocol Buffers, as well and enums and messages. Having a common base for types means\n that we don't run into problems with generating internal types to represent enums and messages.");
            _GpbTypeOBJ.setDerivedFrom("dmdgpb.GpbDefinition");
            _GpbTypeOBJ.setIsNamedBy("meta.name");
            _GpbTypeOBJ.setUseWrapperType("EXTENDED");
            _GpbTypeOBJ.setDmtREFImport("org.dmd.gpb.shared.generated.types.GpbTypeREF");
            _GpbTypeOBJ.setDmwIteratorClass("GpbTypeIterableDMW");
            _GpbTypeOBJ.addMust("meta.name");
            _GpbTypeOBJ.setDmwIteratorImport("org.dmd.gpb.server.generated.dmw.GpbTypeIterableDMW");
            _GpbTypeOBJ.setPartOfDefinitionModule("dmdgpb.GpbModule");
            _GpbTypeOBJ.setDotName("dmdgpb.GpbType.ClassDefinition");
            _GpbType.setDefinedIn(this);
            addClassDefList(_GpbType);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            ClassDefinitionDMO _GpbScalarTypeOBJ = new ClassDefinitionDMO();
            _GpbScalarType = new ClassDefinition(_GpbScalarTypeOBJ,DmdgpbDMSAG.__GpbScalarType);
            _GpbScalarTypeOBJ.setName("GpbScalarType");
            _GpbScalarTypeOBJ.setDmdID("-477996");
            _GpbScalarTypeOBJ.setClassType("STRUCTURAL");
            _GpbScalarTypeOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/classes.dmd");
            _GpbScalarTypeOBJ.setLineNumber("50");
            _GpbScalarTypeOBJ.addDescription("The GpbType class is use to define the types of attributes in the GPB\n specification. All GpbMessages and GpbEnum will have GpbTypes generated for\n them so that they can be used as types for GpbAttributes.\n <p/>\n GpbType definitions cannot be specified in .dmgpb files; they are strictly for\n internal use. If you specify one in a .dmgpb file, you'll get an error.");
            _GpbScalarTypeOBJ.setDerivedFrom("dmdgpb.GpbType");
            _GpbScalarTypeOBJ.setIsNamedBy("meta.name");
            _GpbScalarTypeOBJ.setUseWrapperType("EXTENDED");
            _GpbScalarTypeOBJ.setDmtREFImport("org.dmd.gpb.shared.generated.types.GpbScalarTypeREF");
            _GpbScalarTypeOBJ.setDmwIteratorClass("GpbScalarTypeIterableDMW");
            _GpbScalarTypeOBJ.addMay("dmdgpb.defaultValue");
            _GpbScalarTypeOBJ.addMay("dmdgpb.sizeInBytes");
            _GpbScalarTypeOBJ.addMay("dmdgpb.javaType");
            _GpbScalarTypeOBJ.addMay("dmdgpb.cplusplusType");
            _GpbScalarTypeOBJ.addMay("dmdgpb.pythonType");
            _GpbScalarTypeOBJ.addMust("meta.name");
            _GpbScalarTypeOBJ.setDmwIteratorImport("org.dmd.gpb.server.generated.dmw.GpbScalarTypeIterableDMW");
            _GpbScalarTypeOBJ.setPartOfDefinitionModule("dmdgpb.GpbModule");
            _GpbScalarTypeOBJ.setDotName("dmdgpb.GpbScalarType.ClassDefinition");
            _GpbScalarType.setDefinedIn(this);
            addClassDefList(_GpbScalarType);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            ClassDefinitionDMO _GpbCompositeTypeOBJ = new ClassDefinitionDMO();
            _GpbCompositeType = new ClassDefinition(_GpbCompositeTypeOBJ,DmdgpbDMSAG.__GpbCompositeType);
            _GpbCompositeTypeOBJ.setName("GpbCompositeType");
            _GpbCompositeTypeOBJ.setDmdID("-477995");
            _GpbCompositeTypeOBJ.setClassType("ABSTRACT");
            _GpbCompositeTypeOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/classes.dmd");
            _GpbCompositeTypeOBJ.setLineNumber("67");
            _GpbCompositeTypeOBJ.addDescription("The GpbCompositeType provides a common base for enumerations and messages\n so that they can be referred to as a separate type of object that can be specified in\n standalone blocks within a generated GpbProtoFile.");
            _GpbCompositeTypeOBJ.setDerivedFrom("dmdgpb.GpbType");
            _GpbCompositeTypeOBJ.setIsNamedBy("meta.name");
            _GpbCompositeTypeOBJ.setUseWrapperType("EXTENDED");
            _GpbCompositeTypeOBJ.setDmtREFImport("org.dmd.gpb.shared.generated.types.GpbCompositeTypeREF");
            _GpbCompositeTypeOBJ.setDmwIteratorClass("GpbCompositeTypeIterableDMW");
            _GpbCompositeTypeOBJ.addMay("dmdgpb.generateAs");
            _GpbCompositeTypeOBJ.addMay("meta.version");
            _GpbCompositeTypeOBJ.addMay("meta.skip");
            _GpbCompositeTypeOBJ.addMay("meta.obsolete");
            _GpbCompositeTypeOBJ.addMay("meta.why");
            _GpbCompositeTypeOBJ.addMust("meta.name");
            _GpbCompositeTypeOBJ.setDmwIteratorImport("org.dmd.gpb.server.generated.dmw.GpbCompositeTypeIterableDMW");
            _GpbCompositeTypeOBJ.setPartOfDefinitionModule("dmdgpb.GpbModule");
            _GpbCompositeTypeOBJ.setDotName("dmdgpb.GpbCompositeType.ClassDefinition");
            _GpbCompositeType.setDefinedIn(this);
            addClassDefList(_GpbCompositeType);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            ClassDefinitionDMO _GpbEnumOBJ = new ClassDefinitionDMO();
            _GpbEnum = new ClassDefinition(_GpbEnumOBJ,DmdgpbDMSAG.__GpbEnum);
            _GpbEnumOBJ.setName("GpbEnum");
            _GpbEnumOBJ.setDmdID("-477994");
            _GpbEnumOBJ.setClassType("STRUCTURAL");
            _GpbEnumOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/classes.dmd");
            _GpbEnumOBJ.setLineNumber("94");
            _GpbEnumOBJ.addDescription("The GpbEnum allows for the definition of enumerations. One thing to be aware\n of with enums is that, if you're generating C++, the names of enum elements must be globally\n unique. The dark-matter GPB utility will warn you if you have clashing enum value names.\n <p/>\n May want to allow for mapping between DMS enum definitions and GpbEnums. Provide a basedOnEnum\n attribute that refers to a DMS enum. A GpbDefinitionSet could use the schemaToLoad attribute\n to specify a DMS schema from which definitions can be pulled.\n <p/>\n When you're defining a message type, you might want one of its fields to only have one of a\n pre-defined list of values. For example, let's say you want to add a corpus field for each\n SearchRequest, where the corpus can be UNIVERSAL, WEB, IMAGES, LOCAL, NEWS, PRODUCTS or VIDEO.\n You can do this very simply by adding an enum to your message definition - a field with an enum\n type can only have one of a specified set of constants as its value (if you try to provide a\n different value, the parser will treat it like an unknown field). In the following\n example we've added an enum called Corpus with all the possible values, and a field of type Corpus:");
            _GpbEnumOBJ.setDerivedFrom("dmdgpb.GpbCompositeType");
            _GpbEnumOBJ.setIsNamedBy("meta.name");
            _GpbEnumOBJ.setUseWrapperType("EXTENDED");
            _GpbEnumOBJ.setDmtREFImport("org.dmd.gpb.shared.generated.types.GpbEnumREF");
            _GpbEnumOBJ.setDmwIteratorClass("GpbEnumIterableDMW");
            _GpbEnumOBJ.addMay("dmdgpb.defaultValue");
            _GpbEnumOBJ.addMust("meta.name");
            _GpbEnumOBJ.addMust("dmdgpb.gpbEnumValue");
            _GpbEnumOBJ.setDmwIteratorImport("org.dmd.gpb.server.generated.dmw.GpbEnumIterableDMW");
            _GpbEnumOBJ.setPartOfDefinitionModule("dmdgpb.GpbModule");
            _GpbEnumOBJ.setDotName("dmdgpb.GpbEnum.ClassDefinition");
            _GpbEnum.setDefinedIn(this);
            addClassDefList(_GpbEnum);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            ClassDefinitionDMO _GpbFieldOBJ = new ClassDefinitionDMO();
            _GpbField = new ClassDefinition(_GpbFieldOBJ,DmdgpbDMSAG.__GpbField);
            _GpbFieldOBJ.setName("GpbField");
            _GpbFieldOBJ.setDmdID("-477993");
            _GpbFieldOBJ.setClassType("STRUCTURAL");
            _GpbFieldOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/classes.dmd");
            _GpbFieldOBJ.setLineNumber("109");
            _GpbFieldOBJ.addDescription("The GpbField class is used to represent a reusable, named field for use\n within a GpbMessage.");
            _GpbFieldOBJ.setDerivedFrom("dmdgpb.GpbDefinition");
            _GpbFieldOBJ.setIsNamedBy("meta.name");
            _GpbFieldOBJ.setUseWrapperType("EXTENDED");
            _GpbFieldOBJ.setDmtREFImport("org.dmd.gpb.shared.generated.types.GpbFieldREF");
            _GpbFieldOBJ.setDmwIteratorClass("GpbFieldIterableDMW");
            _GpbFieldOBJ.addMay("meta.hint");
            _GpbFieldOBJ.addMay("meta.description");
            _GpbFieldOBJ.addMay("dmdgpb.generateAs");
            _GpbFieldOBJ.addMust("meta.name");
            _GpbFieldOBJ.addMust("dmdgpb.gpbType");
            _GpbFieldOBJ.setDmwIteratorImport("org.dmd.gpb.server.generated.dmw.GpbFieldIterableDMW");
            _GpbFieldOBJ.setPartOfDefinitionModule("dmdgpb.GpbModule");
            _GpbFieldOBJ.setDotName("dmdgpb.GpbField.ClassDefinition");
            _GpbField.setDefinedIn(this);
            addClassDefList(_GpbField);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            ClassDefinitionDMO _GpbMessageOBJ = new ClassDefinitionDMO();
            _GpbMessage = new ClassDefinition(_GpbMessageOBJ,DmdgpbDMSAG.__GpbMessage);
            _GpbMessageOBJ.setName("GpbMessage");
            _GpbMessageOBJ.setDmdID("-477992");
            _GpbMessageOBJ.setClassType("STRUCTURAL");
            _GpbMessageOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/classes.dmd");
            _GpbMessageOBJ.setLineNumber("120");
            _GpbMessageOBJ.setDerivedFrom("dmdgpb.GpbCompositeType");
            _GpbMessageOBJ.setIsNamedBy("meta.name");
            _GpbMessageOBJ.setUseWrapperType("EXTENDED");
            _GpbMessageOBJ.setDmtREFImport("org.dmd.gpb.shared.generated.types.GpbMessageREF");
            _GpbMessageOBJ.setDmwIteratorClass("GpbMessageIterableDMW");
            _GpbMessageOBJ.addMay("dmdgpb.field");
            _GpbMessageOBJ.addMay("dmdgpb.embed");
            _GpbMessageOBJ.addMust("meta.name");
            _GpbMessageOBJ.setDmwIteratorImport("org.dmd.gpb.server.generated.dmw.GpbMessageIterableDMW");
            _GpbMessageOBJ.setPartOfDefinitionModule("dmdgpb.GpbModule");
            _GpbMessageOBJ.setDotName("dmdgpb.GpbMessage.ClassDefinition");
            _GpbMessage.setDefinedIn(this);
            addClassDefList(_GpbMessage);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            ClassDefinitionDMO _GpbProtoFileOBJ = new ClassDefinitionDMO();
            _GpbProtoFile = new ClassDefinition(_GpbProtoFileOBJ,DmdgpbDMSAG.__GpbProtoFile);
            _GpbProtoFileOBJ.setName("GpbProtoFile");
            _GpbProtoFileOBJ.setDmdID("-477990");
            _GpbProtoFileOBJ.setClassType("STRUCTURAL");
            _GpbProtoFileOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/classes.dmd");
            _GpbProtoFileOBJ.setLineNumber("135");
            _GpbProtoFileOBJ.addDescription("The GpbProtoFile is used to represent a single .proto file. It may be parsed\n from an existing .proto file by the GpbDotProtoParser utility.");
            _GpbProtoFileOBJ.setDerivedFrom("dmdgpb.GpbDefinition");
            _GpbProtoFileOBJ.setIsNamedBy("meta.name");
            _GpbProtoFileOBJ.setUseWrapperType("EXTENDED");
            _GpbProtoFileOBJ.setDmtREFImport("org.dmd.gpb.shared.generated.types.GpbProtoFileREF");
            _GpbProtoFileOBJ.setDmwIteratorClass("GpbProtoFileIterableDMW");
            _GpbProtoFileOBJ.addMay("dmdgpb.import");
            _GpbProtoFileOBJ.addMay("dmdgpb.mainElements");
            _GpbProtoFileOBJ.addMust("meta.name");
            _GpbProtoFileOBJ.addMust("dmdgpb.package");
            _GpbProtoFileOBJ.addMust("dmdgpb.generatedFileName");
            _GpbProtoFileOBJ.setDmwIteratorImport("org.dmd.gpb.server.generated.dmw.GpbProtoFileIterableDMW");
            _GpbProtoFileOBJ.setPartOfDefinitionModule("dmdgpb.GpbModule");
            _GpbProtoFileOBJ.setDotName("dmdgpb.GpbProtoFile.ClassDefinition");
            _GpbProtoFile.setDefinedIn(this);
            addClassDefList(_GpbProtoFile);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            ClassDefinitionDMO _GpbModuleOBJ = new ClassDefinitionDMO();
            _GpbModule = new ClassDefinition(_GpbModuleOBJ,DmdgpbDMSAG.__GpbModule);
            _GpbModuleOBJ.setName("GpbModule");
            _GpbModuleOBJ.setDmdID("-477999");
            _GpbModuleOBJ.setInternallyGenerated("true");
            _GpbModuleOBJ.setClassType("STRUCTURAL");
            _GpbModuleOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/module.dmd");
            _GpbModuleOBJ.setLineNumber("13");
            _GpbModuleOBJ.setDerivedFrom("dmdgpb.GpbDefinition");
            _GpbModuleOBJ.setIsNamedBy("meta.name");
            _GpbModuleOBJ.setUseWrapperType("EXTENDED");
            _GpbModuleOBJ.setDmtREFImport("org.dmd.gpb.shared.generated.types.GpbModuleREF");
            _GpbModuleOBJ.setDmwIteratorClass("GpbModuleIterableDMW");
            _GpbModuleOBJ.addMay("meta.loadSchemaClass");
            _GpbModuleOBJ.addMay("meta.description");
            _GpbModuleOBJ.addMay("meta.defFiles");
            _GpbModuleOBJ.addMay("dmdgpb.package");
            _GpbModuleOBJ.addMay("meta.version");
            _GpbModuleOBJ.addMay("dmdgpb.dependsOnGpbModule");
            _GpbModuleOBJ.addMay("dmconcinnity.dependsOnConcinnityModule");
            _GpbModuleOBJ.addMust("meta.name");
            _GpbModuleOBJ.setDmwIteratorImport("org.dmd.gpb.server.generated.dmw.GpbModuleIterableDMW");
            _GpbModuleOBJ.setDsdModuleDefinition("dmdgpb.GpbModule");
            _GpbModuleOBJ.setPartOfDefinitionModule("dmdgpb.GpbModule");
            _GpbModuleOBJ.setDotName("dmdgpb.GpbModule.ClassDefinition");
            _GpbModule.setDefinedIn(this);
            addClassDefList(_GpbModule);

    }

    private void initAttributes1() throws DmcValueException {
// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _cplusplusTypeOBJ = new AttributeDefinitionDMO();
            _cplusplusType = new AttributeDefinition(_cplusplusTypeOBJ);
            _cplusplusTypeOBJ.setType("meta.String");
            _cplusplusTypeOBJ.setName("cplusplusType");
            _cplusplusTypeOBJ.setDmdID("-477999");
            _cplusplusTypeOBJ.addDescription("An indication of the C++ type associated with a GpbScalar type.");
            _cplusplusTypeOBJ.setDotName("dmdgpb.cplusplusType.AttributeDefinition");
            _cplusplusType.setDefinedIn(this);
            _cplusplusTypeOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _cplusplusTypeOBJ.setLineNumber("6");
            addAttributeDefList(_cplusplusType);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _dmTypeOBJ = new AttributeDefinitionDMO();
            _dmType = new AttributeDefinition(_dmTypeOBJ);
            _dmTypeOBJ.setType("meta.String");
            _dmTypeOBJ.setName("dmType");
            _dmTypeOBJ.setDmdID("-477998");
            _dmTypeOBJ.addDescription("An indication of the dark-matter type associated with a GPB attribute type.");
            _dmTypeOBJ.setDotName("dmdgpb.dmType.AttributeDefinition");
            _dmType.setDefinedIn(this);
            _dmTypeOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _dmTypeOBJ.setLineNumber("12");
            addAttributeDefList(_dmType);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _defaultValueOBJ = new AttributeDefinitionDMO();
            _defaultValue = new AttributeDefinition(_defaultValueOBJ);
            _defaultValueOBJ.setType("meta.String");
            _defaultValueOBJ.setName("defaultValue");
            _defaultValueOBJ.setDmdID("-477996");
            _defaultValueOBJ.addDescription("The default value to be used for a GpbType or for an GpbAttribute.");
            _defaultValueOBJ.setDotName("dmdgpb.defaultValue.AttributeDefinition");
            _defaultValue.setDefinedIn(this);
            _defaultValueOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _defaultValueOBJ.setLineNumber("32");
            addAttributeDefList(_defaultValue);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _sizeInBytesOBJ = new AttributeDefinitionDMO();
            _sizeInBytes = new AttributeDefinition(_sizeInBytesOBJ);
            _sizeInBytesOBJ.setType("meta.Integer");
            _sizeInBytesOBJ.setName("sizeInBytes");
            _sizeInBytesOBJ.setDmdID("-477995");
            _sizeInBytesOBJ.addDescription("The size in bytes that a particular primitive type would occupy on the wire.");
            _sizeInBytesOBJ.setDotName("dmdgpb.sizeInBytes.AttributeDefinition");
            _sizeInBytes.setDefinedIn(this);
            _sizeInBytesOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _sizeInBytesOBJ.setLineNumber("38");
            addAttributeDefList(_sizeInBytes);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _gpbTypeOBJ = new AttributeDefinitionDMO();
            _gpbType = new AttributeDefinition(_gpbTypeOBJ);
            _gpbTypeOBJ.setType("dmdgpb.GpbType");
            _gpbTypeOBJ.setName("gpbType");
            _gpbTypeOBJ.setDmdID("-477994");
            _gpbTypeOBJ.addDescription("A reference to a GpbType definition.");
            _gpbTypeOBJ.setDotName("dmdgpb.gpbType.AttributeDefinition");
            _gpbType.setDefinedIn(this);
            _gpbTypeOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _gpbTypeOBJ.setLineNumber("44");
            addAttributeDefList(_gpbType);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _generatedFileNameOBJ = new AttributeDefinitionDMO();
            _generatedFileName = new AttributeDefinition(_generatedFileNameOBJ);
            _generatedFileNameOBJ.setType("meta.String");
            _generatedFileNameOBJ.setName("generatedFileName");
            _generatedFileNameOBJ.setDmdID("-477993");
            _generatedFileNameOBJ.addDescription("The name of the file to be generated, complete with the appropriate file extension.\n An example would be company_common.proto.");
            _generatedFileNameOBJ.setDotName("dmdgpb.generatedFileName.AttributeDefinition");
            _generatedFileName.setDefinedIn(this);
            _generatedFileNameOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _generatedFileNameOBJ.setLineNumber("51");
            addAttributeDefList(_generatedFileName);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _definedInGpbModuleOBJ = new AttributeDefinitionDMO();
            _definedInGpbModule = new AttributeDefinition(_definedInGpbModuleOBJ);
            _definedInGpbModuleOBJ.setType("dmdgpb.GpbModule");
            _definedInGpbModuleOBJ.setName("definedInGpbModule");
            _definedInGpbModuleOBJ.setDmdID("-477992");
            _definedInGpbModuleOBJ.addDescription("Indicates the name of the GpbModule in which a definition is defined.");
            _definedInGpbModuleOBJ.setDotName("dmdgpb.definedInGpbModule.AttributeDefinition");
            _definedInGpbModule.setDefinedIn(this);
            _definedInGpbModuleOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _definedInGpbModuleOBJ.setLineNumber("57");
            addAttributeDefList(_definedInGpbModule);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _pythonTypeOBJ = new AttributeDefinitionDMO();
            _pythonType = new AttributeDefinition(_pythonTypeOBJ);
            _pythonTypeOBJ.setType("meta.String");
            _pythonTypeOBJ.setName("pythonType");
            _pythonTypeOBJ.setDmdID("-477990");
            _pythonTypeOBJ.addDescription("An indication of the Python type associated with a GPB attribute type.");
            _pythonTypeOBJ.setDotName("dmdgpb.pythonType.AttributeDefinition");
            _pythonType.setDefinedIn(this);
            _pythonTypeOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _pythonTypeOBJ.setLineNumber("70");
            addAttributeDefList(_pythonType);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _javaTypeOBJ = new AttributeDefinitionDMO();
            _javaType = new AttributeDefinition(_javaTypeOBJ);
            _javaTypeOBJ.setType("meta.String");
            _javaTypeOBJ.setName("javaType");
            _javaTypeOBJ.setDmdID("-477989");
            _javaTypeOBJ.addDescription("An indication of the Java type associated with a GPB attribute type.");
            _javaTypeOBJ.setDotName("dmdgpb.javaType.AttributeDefinition");
            _javaType.setDefinedIn(this);
            _javaTypeOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _javaTypeOBJ.setLineNumber("76");
            addAttributeDefList(_javaType);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _basedOnEnumOBJ = new AttributeDefinitionDMO();
            _basedOnEnum = new AttributeDefinition(_basedOnEnumOBJ);
            _basedOnEnumOBJ.setType("meta.EnumDefinition");
            _basedOnEnumOBJ.setName("basedOnEnum");
            _basedOnEnumOBJ.setDmdID("-477988");
            _basedOnEnumOBJ.addDescription("Indicates that a GPB enum is based on a dark-matter schema defined enumeration.");
            _basedOnEnumOBJ.setDotName("dmdgpb.basedOnEnum.AttributeDefinition");
            _basedOnEnum.setDefinedIn(this);
            _basedOnEnumOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _basedOnEnumOBJ.setLineNumber("82");
            addAttributeDefList(_basedOnEnum);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _dependsOnGpbModuleOBJ = new AttributeDefinitionDMO();
            _dependsOnGpbModule = new AttributeDefinition(_dependsOnGpbModuleOBJ);
            _dependsOnGpbModuleOBJ.setType("dmdgpb.GpbModule");
            _dependsOnGpbModuleOBJ.setName("dependsOnGpbModule");
            _dependsOnGpbModuleOBJ.setDmdID("-477980");
            _dependsOnGpbModuleOBJ.addDescription("Indicates the GpbModule on which something depends.");
            _dependsOnGpbModuleOBJ.setValueType("MULTI");
            _dependsOnGpbModuleOBJ.setDotName("dmdgpb.dependsOnGpbModule.AttributeDefinition");
            _dependsOnGpbModule.setDefinedIn(this);
            _dependsOnGpbModuleOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _dependsOnGpbModuleOBJ.setLineNumber("89");
            addAttributeDefList(_dependsOnGpbModule);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _packageOBJ = new AttributeDefinitionDMO();
            _package = new AttributeDefinition(_packageOBJ);
            _packageOBJ.setType("meta.String");
            _packageOBJ.setName("package");
            _packageOBJ.setDmdID("-477979");
            _packageOBJ.addDescription("The package associated with a .proto file.");
            _packageOBJ.setDotName("dmdgpb.package.AttributeDefinition");
            _package.setDefinedIn(this);
            _packageOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _packageOBJ.setLineNumber("95");
            addAttributeDefList(_package);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _gpbEnumValueOBJ = new AttributeDefinitionDMO();
            _gpbEnumValue = new AttributeDefinition(_gpbEnumValueOBJ);
            _gpbEnumValueOBJ.setType("dmdgpb.GpbEnumValue");
            _gpbEnumValueOBJ.setName("gpbEnumValue");
            _gpbEnumValueOBJ.setDmdID("-477978");
            _gpbEnumValueOBJ.addDescription("The values of an enumeration.");
            _gpbEnumValueOBJ.setValueType("MULTI");
            _gpbEnumValueOBJ.setDotName("dmdgpb.gpbEnumValue.AttributeDefinition");
            _gpbEnumValue.setDefinedIn(this);
            _gpbEnumValueOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _gpbEnumValueOBJ.setLineNumber("102");
            addAttributeDefList(_gpbEnumValue);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _mainElementsOBJ = new AttributeDefinitionDMO();
            _mainElements = new AttributeDefinition(_mainElementsOBJ);
            _mainElementsOBJ.setType("dmdgpb.GpbCompositeType");
            _mainElementsOBJ.setName("mainElements");
            _mainElementsOBJ.setDmdID("-477977");
            _mainElementsOBJ.addDescription("The mainElements attribute indicates a list of GpbCompositeTypes that comprise a GpbProtoFile. Main elements\n include messages and enumerations.");
            _mainElementsOBJ.setValueType("MULTI");
            _mainElementsOBJ.setDotName("dmdgpb.mainElements.AttributeDefinition");
            _mainElements.setDefinedIn(this);
            _mainElementsOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _mainElementsOBJ.setLineNumber("110");
            addAttributeDefList(_mainElements);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _fieldOBJ = new AttributeDefinitionDMO();
            _field = new AttributeDefinition(_fieldOBJ);
            _fieldOBJ.setType("dmdgpb.GpbFieldIndicator");
            _fieldOBJ.setName("field");
            _fieldOBJ.setDmdID("-477976");
            _fieldOBJ.addDescription("A set of fields in a GpbMessage.");
            _fieldOBJ.setValueType("MULTI");
            _fieldOBJ.setDotName("dmdgpb.field.AttributeDefinition");
            _field.setDefinedIn(this);
            _fieldOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _fieldOBJ.setLineNumber("117");
            addAttributeDefList(_field);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _tagOBJ = new AttributeDefinitionDMO();
            _tag = new AttributeDefinition(_tagOBJ);
            _tagOBJ.setType("meta.Integer");
            _tagOBJ.setName("tag");
            _tagOBJ.setDmdID("-477975");
            _tagOBJ.addDescription("As you can see, each field in the message definition has a unique numbered tag.\n These tags are used to identify your fields in the message binary format, and should not be\n changed once your message type is in use. Note that tags with values in the range 1 through 15\n take one byte to encode, including the identifying number and the field's type (you can find\n out more about this in Protocol Buffer Encoding). Tags in the range 16 through 2047 take two\n bytes. So you should reserve the tags 1 through 15 for very frequently occurring message\n elements. Remember to leave some room for frequently occurring elements that might be added\n in the future.\n <p/>\n The smallest tag number you can specify is 1, and the largest is 229 - 1, or 536,870,911.\n You also cannot use the numbers 19000 though 19999");
            _tagOBJ.setDotName("dmdgpb.tag.AttributeDefinition");
            _tag.setDefinedIn(this);
            _tagOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _tagOBJ.setLineNumber("133");
            addAttributeDefList(_tag);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _fieldRuleOBJ = new AttributeDefinitionDMO();
            _fieldRule = new AttributeDefinition(_fieldRuleOBJ);
            _fieldRuleOBJ.setType("dmdgpb.FieldRuleEnum");
            _fieldRuleOBJ.setName("fieldRule");
            _fieldRuleOBJ.setDmdID("-477974");
            _fieldRuleOBJ.addDescription("Indicates if a field is required, optional or repeated. See the note about \n required fields as part of the FieldRuleEnum.\n <p/>\n For historical reasons, repeated fields of basic numeric types aren't encoded as efficiently\n as they could be. New code should use the special option [packed=true] to get a more efficient encoding.\n <br/>\n For example: repeated int32 samples = 4 [packed=true];");
            _fieldRuleOBJ.setDotName("dmdgpb.fieldRule.AttributeDefinition");
            _fieldRule.setDefinedIn(this);
            _fieldRuleOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _fieldRuleOBJ.setLineNumber("145");
            addAttributeDefList(_fieldRule);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _importOBJ = new AttributeDefinitionDMO();
            _import = new AttributeDefinition(_importOBJ);
            _importOBJ.setType("meta.String");
            _importOBJ.setName("import");
            _importOBJ.setDmdID("-477973");
            _importOBJ.addDescription("An import associated with a .proto file.");
            _importOBJ.setValueType("MULTI");
            _importOBJ.setDotName("dmdgpb.import.AttributeDefinition");
            _import.setDefinedIn(this);
            _importOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _importOBJ.setLineNumber("152");
            addAttributeDefList(_import);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _embedOBJ = new AttributeDefinitionDMO();
            _embed = new AttributeDefinition(_embedOBJ);
            _embedOBJ.setType("dmdgpb.GpbCompositeType");
            _embedOBJ.setName("embed");
            _embedOBJ.setDmdID("-477972");
            _embedOBJ.addDescription("The embed attribute is used to indicate that an existing GpbEnum or GpbMessage\n description should be embedded directly within a message definition.");
            _embedOBJ.setValueType("MULTI");
            _embedOBJ.setDotName("dmdgpb.embed.AttributeDefinition");
            _embed.setDefinedIn(this);
            _embedOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _embedOBJ.setLineNumber("160");
            addAttributeDefList(_embed);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            AttributeDefinitionDMO _generateAsOBJ = new AttributeDefinitionDMO();
            _generateAs = new AttributeDefinition(_generateAsOBJ);
            _generateAsOBJ.setType("meta.String");
            _generateAsOBJ.setName("generateAs");
            _generateAsOBJ.setDmdID("-477971");
            _generateAsOBJ.addDescription("When protocol elements have clashing names in the namespace of a dmgpb set of definitions,\n we alter their original names but maintain the original name here so that we can regenerate the .proto\n file without difficulty. This is also handy when you start to merge definitions from different .proto\n implementations but still want to maintain the old names in the regenerated .proto files.");
            _generateAsOBJ.setDotName("dmdgpb.generateAs.AttributeDefinition");
            _generateAs.setDefinedIn(this);
            _generateAsOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/attributes.dmd");
            _generateAsOBJ.setLineNumber("169");
            addAttributeDefList(_generateAs);

    }

    // Generated from: org.dmd.dmg.util.SchemaFormatter.dumpInitFunction(SchemaFormatter.java:313)
    private void initTypes() throws DmcValueException {
// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            TypeDefinitionDMO _GpbFieldIndicatorOBJ = new TypeDefinitionDMO();
            _GpbFieldIndicator = new TypeDefinition(_GpbFieldIndicatorOBJ);
            _GpbFieldIndicatorOBJ.setName("GpbFieldIndicator");
            _GpbFieldIndicatorOBJ.addDescription("The GpbFieldIndicator type is used to represent the specification\n of elements that comprise a GpbMessage. The elements may refer to GpbFields, GpbEnums\n or other GpbMessages.");
            _GpbFieldIndicatorOBJ.setTypeClassName("org.dmd.gpb.shared.types.DmcTypeGpbFieldIndicator");
            _GpbFieldIndicatorOBJ.setPrimitiveType("org.dmd.gpb.shared.types.GpbFieldIndicator");
            _GpbFieldIndicatorOBJ.setDmwIteratorClass("GpbFieldIndicatorIterableDMW");
            _GpbFieldIndicatorOBJ.setDotName("dmdgpb.GpbFieldIndicator.TypeDefinition");
            _GpbFieldIndicatorOBJ.setDmwIteratorImport("org.dmd.gpb.server.generated.dmw.GpbFieldIndicatorIterableDMW");
            _GpbFieldIndicator.setDefinedIn(this);
            _GpbFieldIndicatorOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/types.dmd");
            _GpbFieldIndicatorOBJ.setLineNumber("23");
            addTypeDefList(_GpbFieldIndicator);

    }

    // Generated from: org.dmd.dmg.util.SchemaFormatter.dumpInitFunction(SchemaFormatter.java:313)
    private void initComplexTypes() throws DmcValueException {
// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            ComplexTypeDefinitionDMO _GpbFieldIndicatorBaseOBJ = new ComplexTypeDefinitionDMO();
            _GpbFieldIndicatorBase = new ComplexTypeDefinition(_GpbFieldIndicatorBaseOBJ);
            _GpbFieldIndicatorBaseOBJ.setName("GpbFieldIndicatorBase");
            _GpbFieldIndicatorBaseOBJ.addDescription("The field indicator is used to indicate the assignment of a defined GpbField\n to a GpbMessage. It is very similar in form to a GPB field definition except for the fact\n that the type information is not included; the type is indicated in the referenced GpbField.\n </p>");
            _GpbFieldIndicatorBaseOBJ.addOptionalPart("OptionEnum option \"Indicates if the PACKED option is to be used for repeated fields.\"");
            _GpbFieldIndicatorBaseOBJ.addOptionalPart("String default \"The default value\"");
            _GpbFieldIndicatorBaseOBJ.addOptionalPart("String hint \"This hint will override the hint provided by the GpbField, this is handy in cases where you have a very generic field name, like timestamp, and want something a bit more descriptive.\"");
            _GpbFieldIndicatorBaseOBJ.addOptionalPart("String version \"The version at which the field was introduced in the message.\"");
            _GpbFieldIndicatorBaseOBJ.addOptionalPart("String obsolete \"The version at which the field was made obsolete.\"");
            _GpbFieldIndicatorBaseOBJ.addOptionalPart("String note \"A note about the field and its use in this message e.g. why it's obsolete.\" quoted=true");
            _GpbFieldIndicatorBaseOBJ.addOptionalPart("String skip \"If a field isn't supported in one or more intermediate versions, you can indicate the skip version.\" multivalued=true");
            _GpbFieldIndicatorBaseOBJ.addOptionalPart("Concept why \"An indication of why the field was added. This might be a reference to a requirement or feature concept.\" multivalued=true weakref=true");
            _GpbFieldIndicatorBaseOBJ.addOptionalPart("Integer order \"In some cases you want to indicate the order in which fields are handled, for instance in generated documentation. This lets you specify an ordering.\"");
            _GpbFieldIndicatorBaseOBJ.addRequiredPart("FieldRuleEnum fieldRule \"Whether the field is required, optional or repeated.\"");
            _GpbFieldIndicatorBaseOBJ.addRequiredPart("GpbField fieldRef \"Reference to the GpbField to be used.\"");
            _GpbFieldIndicatorBaseOBJ.addRequiredPart("Integer fieldTag \"The unique numeric tag for this field.\"");
            _GpbFieldIndicatorBaseOBJ.addExample("code: Standard field definition : Here's some explanation");
            _GpbFieldIndicatorBaseOBJ.addExample("code: Field definition with a default value : blah blah");
            _GpbFieldIndicatorBaseOBJ.addExample("code: A packed field : blah blah");
            _GpbFieldIndicatorBaseOBJ.addExample("code: A field with a version indicator : blah blah");
            _GpbFieldIndicatorBaseOBJ.addExample("text: An obsolete field : blah blah");
            _GpbFieldIndicatorBaseOBJ.addExample("text: Overriding the hint associated with a field : blah blah");
            _GpbFieldIndicatorBaseOBJ.setDotName("dmdgpb.GpbFieldIndicatorBase.ComplexTypeDefinition");
            _GpbFieldIndicatorBase.setDefinedIn(this);
            _GpbFieldIndicatorBaseOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/complex.dmd");
            _GpbFieldIndicatorBaseOBJ.setLineNumber("34");
            addComplexTypeDefList(_GpbFieldIndicatorBase);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            ComplexTypeDefinitionDMO _GpbEnumValueOBJ = new ComplexTypeDefinitionDMO();
            _GpbEnumValue = new ComplexTypeDefinition(_GpbEnumValueOBJ);
            _GpbEnumValueOBJ.setName("GpbEnumValue");
            _GpbEnumValueOBJ.addOptionalPart("String version \"The version at which the value was introduced in the enumeration.\"");
            _GpbEnumValueOBJ.addOptionalPart("String obsolete \"The version at which the value was made obsolete.\"");
            _GpbEnumValueOBJ.addOptionalPart("String note \"A note about the value and its use in this message e.g. why it's obsolete.\" quoted=true");
            _GpbEnumValueOBJ.addOptionalPart("String skip \"If a value isn't supported in one or more intermediate versions, you can indicate the skip version.\" multivalued=true");
            _GpbEnumValueOBJ.addOptionalPart("Concept concept \"A reference to a concinnity concept. This might refer to conceptual definition of the thing represented by this value.\" weakref=true");
            _GpbEnumValueOBJ.addOptionalPart("Concept baseValue \"If you want to coordinate disparate enum values that actually mean the same thing across systems, you can refer to the base concept value via this part. Mapping software can then be generated to automatically perform the translation between values.\" weakref=true");
            _GpbEnumValueOBJ.addOptionalPart("Concept why \"An indication of why the field was added. This might be a reference to a requirement or feature concept.\" multivalued=true weakref=true");
            _GpbEnumValueOBJ.addRequiredPart("String name \"The name of the enumerated value\"");
            _GpbEnumValueOBJ.addRequiredPart("Integer value \"The numeric value\"");
            _GpbEnumValueOBJ.addRequiredPart("String description \"A description of the value\" quoted=true");
            _GpbEnumValueOBJ.setDotName("dmdgpb.GpbEnumValue.ComplexTypeDefinition");
            _GpbEnumValue.setDefinedIn(this);
            _GpbEnumValueOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/complex.dmd");
            _GpbEnumValueOBJ.setLineNumber("48");
            addComplexTypeDefList(_GpbEnumValue);

    }

    // Generated from: org.dmd.dmg.util.SchemaFormatter.dumpInitFunction(SchemaFormatter.java:313)
    private void initActions() throws DmcValueException {
    }

    // Generated from: org.dmd.dmg.util.SchemaFormatter.dumpInitFunction(SchemaFormatter.java:313)
    private void initEnums() throws DmcValueException {
// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            EnumDefinitionDMO _FieldRuleEnumOBJ = new EnumDefinitionDMO();
            _FieldRuleEnum = new EnumDefinition(_FieldRuleEnumOBJ);
            _FieldRuleEnumOBJ.setName("FieldRuleEnum");
            _FieldRuleEnumOBJ.addEnumValue("0 REQUIRED A well-formed message must have exactly one of this field.");
            _FieldRuleEnumOBJ.addEnumValue("1 OPTIONAL A well-formed message can have zero or one of this field (but not more than one).");
            _FieldRuleEnumOBJ.addEnumValue("2 REPEATED This field can be repeated any number of times (including zero) in a well-formed message. The order of the repeated values will be preserved.");
            _FieldRuleEnumOBJ.addDescription("The FieldRuleEnum indicates whether a field is required, optional or repeated.\n <p/>\n REQUIRED is Forever You should be very careful about marking fields as required. If at some\n point you wish to stop writing or sending a required field, it will be problematic to change\n the field to an optional field � old readers will consider messages without this field to be\n incomplete and may reject or drop them unintentionally. You should consider writing\n application-specific custom validation routines for your buffers instead. Some engineers\n at Google have come to the conclusion that using required does more harm than good; they\n prefer to use only optional and repeated. However, this view is not universal.");
            _FieldRuleEnumOBJ.setDotName("dmdgpb.FieldRuleEnum.EnumDefinition");
            _FieldRuleEnum.setDefinedIn(this);
            _FieldRuleEnumOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/types.dmd");
            _FieldRuleEnumOBJ.setLineNumber("15");
            addEnumDefList(_FieldRuleEnum);

// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            EnumDefinitionDMO _OptionEnumOBJ = new EnumDefinitionDMO();
            _OptionEnum = new EnumDefinition(_OptionEnumOBJ);
            _OptionEnumOBJ.setName("OptionEnum");
            _OptionEnumOBJ.addEnumValue("1 PACKED Indicates that the more efficient packed representation of numeric data should be used for REPEATED fields.");
            _OptionEnumOBJ.addDescription("The OptionEnum indicates whether a field uses a packed representation. Unlike the GPB\n base concept of having DEFAULT or PACKED as the options, you would use the default=\"value\" construct\n to indicate a default value.");
            _OptionEnumOBJ.setDotName("dmdgpb.OptionEnum.EnumDefinition");
            _OptionEnum.setDefinedIn(this);
            _OptionEnumOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/types.dmd");
            _OptionEnumOBJ.setLineNumber("30");
            addEnumDefList(_OptionEnum);

    }

    // Generated from: org.dmd.dmg.util.SchemaFormatter.dumpInitFunction(SchemaFormatter.java:313)
    private void initRules() throws DmcValueException {
    }

    // Generated from: org.dmd.dmg.util.SchemaFormatter.dumpInitFunction(SchemaFormatter.java:313)
    private void initDSDModules() throws DmcValueException {
// Generated from: org.dmd.dmg.util.SchemaFormatter.getObjectAsCode(SchemaFormatter.java:585)
            DSDefinitionModuleDMO _GpbModuleDSDOBJ = new DSDefinitionModuleDMO();
            _GpbModuleDSD = new DSDefinitionModule(_GpbModuleDSDOBJ);
            _GpbModuleDSDOBJ.setName("GpbModule");
            _GpbModuleDSDOBJ.setDmdID("1");
            _GpbModuleDSDOBJ.addRequiredBaseModule("gpbbase");
            _GpbModuleDSDOBJ.setSupportDynamicSchemaLoading("true");
            _GpbModuleDSDOBJ.setModuleClassName("GpbModule");
            _GpbModuleDSDOBJ.setFileExtension("dmgpb");
            _GpbModuleDSDOBJ.setDefinedInModuleAttribute("dmdgpb.definedInGpbModule");
            _GpbModuleDSDOBJ.setDotName("dmdgpb.GpbModule.DSDefinitionModule");
            _GpbModuleDSDOBJ.addRefersToDefsFromDSD("dmconcinnity.ConcinnityModule");
            _GpbModuleDSDOBJ.setFile("/src/org/dmd/gpb/shared/dmdconfig/v0dot1/module.dmd");
            _GpbModuleDSDOBJ.setModuleDependenceAttribute("dmdgpb.dependsOnGpbModule");
            _GpbModuleDSDOBJ.setLineNumber("13");
            _GpbModuleDSDOBJ.setBaseDefinition("dmdgpb.GpbDefinition");
            _GpbModuleDSDOBJ.addMay("dmdgpb.package");
            _GpbModuleDSDOBJ.addMay("meta.version");
            _GpbModuleDSD.setDefinedIn(this);
            addDsdModuleList(_GpbModuleDSD);

    }

    // Generated from: org.dmd.dmg.util.SchemaFormatter.dumpSchema(SchemaFormatter.java:272)

    @Override
    public synchronized DmdgpbSchemaAG getInstance() throws DmcValueException{
    	   if (instance == null)
    		   initialize();
    	   return(instance);
    }
}

